package com.dinglian.ots.service;

import com.dinglian.ots.common.model.Page;
import com.dinglian.ots.dao.model.Product;
import com.dinglian.ots.vo.product.*;
import com.github.pagehelper.PageInfo;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * @author wangbo
 */
public interface ProductService {


    /**
     * 获取产品列表
     *
     * @param brandId
     * @param categoryId
     * @param keyword
     * @param pageNum
     * @param pageSize
     * @return
     */
    Page getProductList(Integer brandId, Integer categoryId, String keyword, Integer pageNum, Integer pageSize);

    /**
     * 获取推荐产品
     *
     * @param pageNum
     * @param pageSize
     * @param categoryId
     * @return
     */
    PageInfo<ProductVo> getRecommendProduct(Integer pageNum, Integer pageSize, Integer categoryId);


    /**
     * 获取产品详情
     *
     * @param userId
     * @param productId
     * @return
     */
    ProductInfoVo getProductInfo(Integer userId, Integer productId);

    /**
     * 获取产品sku
     *
     * @param productId
     * @return
     */
    ProductSkuVo getProductSku( Integer productId);

    /**
     * 查询品牌下的产品列表
     *
     * @param name
     * @param stylename
     * @param title
     * @param seasonId
     * @param categoryId
     * @param subcategoryId
     * @param isShow
     * @param status
     * @param upperDate
     * @param downDate
     * @param pageNum
     * @param pageSize
     * @return
     */
    PageInfo<ProductListVo> getProductListByBrand(Integer brandId,String name, String stylename, String title, Integer seasonId, Integer categoryId, Integer subcategoryId,Integer isShow,Integer status, String upperDate, String downDate, Integer pageNum, Integer pageSize);


    /**
     * 添加产品
     *
     * @param productVo
     * @return
     */
    void addProduct(AddProductVo productVo);


    /**
     * 批量导入商品
     *
     * @param file
     * @param brandId
     */
    void batchImportProduct(MultipartFile file, Integer brandId);

    /**
     * 编辑产品
     *
     * @param productVo
     */
    void editProduct(EditProductVo productVo);

    /**
     * 删除产品
     *
     * @param productIds
     */
    void deleteProduct(String productIds);

    /**
     * 批量上下架产品
     * @param productIds
     * @param isShow
     */
    void upperDownProduct(String productIds,Boolean isShow);

    /**
     * 获取商品详情
     * @param productId
     * @return
     */
    ProductDetailVo getProductDetail(Integer productId);

    /**
     * 添加产品的sku
     * @param skuVo
     */
    SkuVo addProductSku(AddSkuVo skuVo);

    /**
     * 更新品牌sku
     * @param skuVo
     */
    void updateProductSku(UpdateSkuVo skuVo);

    /**
     * 删除产品SKU
     * @param skuId
     */
    void deleteProductSku(Integer skuId);

    void test(Integer brandId);
}
